<?php
class Delivery_Model_Mapper_TagsNegocio
	extends Delivery_Model_Mapper_Abstract
{
	
	public function getDbTable()
	{
		return parent::getDbTable( 'TagsNegocio' );
	}
	
	public function save( $tagNegocio )
	{
		$dbTable= $this->getDbTAble();
		
		if ( ! $tagNegocio->getId() ){
			return $tagNegocio->idTagNegocio = $dbTable->insert( $tagNegocio );		
		} else {
			return $dbTable->update( $tagNegocio );	
		}	
	}
	
	public function delete( $tagNegocio )
	{
		$dbTable = $this->getDbTAble();
		$this->logDeleted( $tagNegocio );
		
		return $dbTable->delete( $tagNegocio );		
	}
	
	/**
	 * @param int $idTagNegocio
	 * @param int $idNegocio (opzional)
	 * @return object Delivery_Model_TagNegocio
	 */
	public function getById( $idTagNegocio, $idNegocio = null )
	{
		if ( $this->getIdentityMap()->isRegistered( 'Delivery_Model_TagNegocio', $idTagNegocio )){
			return $this->getIdentityMap()->get( 'Delivery_Model_TagNegocio', $idTagNegocio );
		}
		
		$dbTable= $this->getDbTAble();
		$row	= $dbTable->getById( $idTagNegocio, $idNegocio );
	
		if( empty($row) ){
			throw new Delivery_Model_Exception( Delivery_Model_Exception::TAG_NOT_FOUND );
		}
		
		return $this->_fetch( $row );
	}
	
	/**
	 * @param int $idTag
	 * @param int $idNegocio
	 * @return object Delivery_Model_TagNegocio
	 */
	public function getByTagAndNegocio( $idTag, $idNegocio )
	{
		$dbTable= $this->getDbTAble();
		$row	= $dbTable->getByTagAndNegocio( $idTag, $idNegocio );
	
		if( empty($row) ){
			throw new Delivery_Model_Exception( Delivery_Model_Exception::TAG_NOT_FOUND );
		}
		
		return $this->_fetch( $row );
	}
	
	
	
	
	/**
	 * @param int $idTag
	 * @return object Delivery_Model_Tag
	 */
	public function getByParentId( $idTag )
	{
		$mapper = Delivery_Model_Factory::mapper('Tags');
	
		$tag = $mapper->getById( $idTag );
		
		return $this->_fetch( get_object_vars( $tag ) );
	}
	
	
	public function getByNegocio( $idNegocio )
	{
		$dbTable= $this->getDbTAble();
		
		return $this->_fetchCollection(
			'TagsNegocio',
			$dbTable->getByNegocio( $idNegocio )
		);
	}
	
	
	
	
	
	
	
	
	
	/**
	 * @param array
	 * @return object Delivery_Model_Tag
	 */
	protected function _fetch( $row )
	{
		$tag = new Delivery_Model_TagNegocio( $row );
		
		$this->getIdentityMap()->set( $tag, $tag->getId() );
		
		return $tag;
	}
	
}